An embedded system is a specialized computer used to control devices such as automobiles, home and office appliances, handheld units of all kinds as well as machines as sophisticated as space vehicles. In embedded systems, operating systems (OSes) and application functions are often combined in the same program.
In order to allow programming of embedded systems, various computer OSes and applications have been modified to function on the embedded systems. Because of the small size of embedded systems, memory is at a premium. As such, memory management, the process by which memory is made available to executing processes, allows larger OSes and applications to run on embedded systems. In the context of the present invention, the terms process, function, and the like are meant to broadly refer to any executable software entity.
Different compilers and OSes manage memory differently. A heap is one way to manage the area of memory in an application partition in which space is dynamically allocated and released on demand. The heap begins at the low-memory end of the application partition and extends upward in memory. The heap contains virtually all items that are not allocated on the stack. For instance, the application heap contains the application's code segments and resources that are currently loaded into memory. The heap also contains other dynamically allocated items such as window records, dialog records, document data, and so forth.